PostgreSQL 高可用 Repmgr环境准备

1 安装 postgresql 数据库

2 操作系统依赖包

2.1 配置软件仓库

vi /etc/yum.repos.d/almalinux-crb.repo
enabled=1

2.2 安装依赖包

dnf install curl-devel json-c-devel -y 

3 配置DNS 解析

cat >> /etc/hosts << EOF 
192.168.10.228 vip 
192.168.10.229 node1
192.168.10.230 node2
192.168.10.231 node3
192.168.10.232 node4
EOF

4 配置 Linux SSH 配置节点互信

5 配置 ip 和 arping 命令的 setuid

chmod u+s /sbin/ip 
chmod u+s /usr/sbin/arping
ls -ltra /sbin/ip
ls -ltra /usr/sbin/arping

6 PostgreSQL 数据库环境准备

6.1 node1

1、配置数据库参数

ALTER SYSTEM set wal_log_hints=on;

2、配置 pg_hba.conf

vi $PGDATA/pg_hba.conf
host    replication     repmgr          127.0.0.1/32            scram-sha-256
host    replication     repmgr          192.168.10.0/24         scram-sha-256
host    all             repmgr          192.168.10.0/24         scram-sha-256
host    all             repmgr          127.0.0.1/32            scram-sha-256

3、创建 repmgr 数据库和 repmgr 用户

CREATE USER repmgr PASSWORD 'repmgr' superuser;
CREATE DATABASE repmgr OWNER repmgr;
ALTER USER repmgr SET search_path TO repmgr, "$user", public;

4、重启数据库

pg_ctl restart

5、创建必要目录

mkdir -p /usr/local/pgsql/run
mkdir -p /usr/local/pgsql/log

6.2 node2

1、删除数据库集簇目录,用于 clone 主库库。

su - postgres
pg_ctl stop 
rm -rf $PGDATA/*
ll $PGDATA/

2、创建必要目录

mkdir -p /usr/local/pgsql/run
mkdir -p /usr/local/pgsql/log

6.3 node3

1、删除数据库集簇目录,用于 clone 主库库。

su - postgres
pg_ctl stop 
rm -rf $PGDATA/*
ll $PGDATA/

2、创建必要目录

mkdir -p /usr/local/pgsql/run
mkdir -p /usr/local/pgsql/log

6.4 node4

Warning

repmgrd 组件不允许witness 节点数据库和 master 数据库有相同 database system identifiers
所以需要将node4 上的数据库删除重建。否则就会报以下错误:

INFO: connecting to witness node "node4" (ID: 4)
INFO: connecting to primary node
ERROR: witness node cannot be in the same cluster as the primary node
DETAIL: database system identifiers on primary node and provided witness node match (7276711414967480263)
HINT: the witness node must be created on a separate read/write node

1、删除原有数据库集簇。

su - postgres
pg_ctl stop 
rm -rf $PGDATA/* 
ll $PGDATA/

2、重新创建数据库集簇。

initdb -D $PGDATA -W --data-checksums  -A scram-sha-256  -E UTF-8 

3、 PostgreSQL 客户端认证配置
4、 PostgreSQL 错误日志配置
3、配置数据库参数

ALTER SYSTEM set wal_log_hints=on;

4、配置 pg_hba.conf

vi $PGDATA/pg_hba.conf
host    replication     repmgr          127.0.0.1/32            scram-sha-256
host    replication     repmgr          192.168.10.0/24         scram-sha-256
host    all             repmgr          192.168.10.0/24         scram-sha-256
host    all             repmgr          127.0.0.1/32            scram-sha-256

5、创建 repmgr 数据库和repmgr 用户

CREATE USER repmgr PASSWORD 'repmgr' SUPERUSER;
CREATE DATABASE repmgr OWNER repmgr;
ALTER USER repmgr SET search_path TO repmgr, "$user", public;

4、重启数据库

pg_ctl restart

5、创建必要目录

mkdir -p /usr/local/pgsql/run
mkdir -p /usr/local/pgsql/log

7 配置 PostgreSQL 密码文件

Warning

如果不想配置密码文件,请在 PostgreSQL 高可用 Repmgr环境准备#5 PostgreSQL 数据库环境准备的pg_hba.conf 配置 trust 认证方式,否则会报错。

su - postgres
vi ~/.pgpass
*:5432:*:repl:repl
*:5432:*:postgres:postgres
*:5432:*:repmgr:repmgr


chmod 600  ~/.pgpass
scp ~/.pgpass node1:~
scp ~/.pgpass node2:~
scp ~/.pgpass node3:~
scp ~/.pgpass node4:~